package main

import (
	"fmt"
)

type Animal interface {
	Eat()
	Talk()
	Name() string
}
type Describe interface {
	Describe() string
}
type AdvanceAnimal interface {
	Animal
	Describe
}

type Dog struct {
}

func (d Dog) Eat() {
	fmt.Println("dog is eating")

}

func (d Dog) Talk() {
	fmt.Println("dog is talking")

}

func (d Dog) Name() string {
	fmt.Println("dog is name wangcai")
	return "wangcai"
}
func (d Dog) Describe() string {
	fmt.Println("dog is a pet")
	return "dog is a pet"
}

func main() {
	var d Dog
	var a AdvanceAnimal

	a = d

	a.Describe()
	a.Eat()
	a.Talk()
	a.Name()

}
